home *** CD-ROM | disk | FTP | other *** search
/ SGI Freeware 1999 August / SGI Freeware 1999 August.iso / dist / fw_geomview.idb / usr / freeware / lib / geomview / modules / tcl / NDdemo.z / NDdemo
Encoding:
Text File  |  1999-01-26  |  4.2 KB  |  129 lines

  1. #!./testwish
  2.  
  3. if [catch {set ndroot $env(GEOMROOT)/data}] {
  4.     puts stderr "Normally, modules are run in an environment in which the GEOMROOT environment\nvariable is set, which has not been done.  This is done by the geomview\nshell script:  please check your shell script.\n"
  5.     exit 1
  6. }
  7.  
  8. proc mkDemo {} {
  9.     wm geometry . +0+0
  10.  
  11.     frame .o
  12.     label .o.objectlabel -text "Objects"
  13.     frame .o.f -relief raised -bd 3
  14.     listbox .o.f.objects -selectmode browse -width 11 -height 9
  15.     bind .o.f.objects <ButtonRelease-1> {loadit [selection get]}
  16.     .o.f.objects insert end "Point"
  17.     .o.f.objects insert end "2 Points"
  18.     .o.f.objects insert end "Segment"
  19.     .o.f.objects insert end "2 Segments"
  20.     .o.f.objects insert end "Square"
  21.     .o.f.objects insert end "2 Squares"
  22.     .o.f.objects insert end "Cube"
  23.     .o.f.objects insert end "2 Cubes"
  24.     .o.f.objects insert end "Tesseract"
  25.  
  26.     .o.f.objects select set 0
  27.     pack .o.f.objects -expand 1 -fill y
  28.     pack .o.objectlabel
  29.     pack .o.f -expand 1 -fill y
  30.     pack .o -side left -padx 2 -pady 2 -fill y
  31.  
  32.     frame .text
  33.     pack .text -side left -padx 2 -pady 2 -expand 1 -fill both
  34.     text .text.t -relief sunken -bd 3 -width 50 -height 1 -yscrollcommand ".text.s set"
  35.     scrollbar .text.s -command ".text.t yview"
  36.     pack .text.s -fill y -side right
  37.     pack .text.t -expand 1 -fill both
  38.  
  39.     frame .right
  40.     button .right.quit -command {
  41.     catch {
  42.         puts {
  43.         (if (real-id axes) (delete axes))
  44.         (if (real-id g2) (delete g2))
  45.         (if (real-id X_W_plane) (delete X_W_plane))
  46.         (if (real-id X_Y_Z_hyperplane) (delete X_Y_Z_hyperplane))
  47.         }
  48.         flush stdout
  49.     }
  50.     catch {exec "killall eitherwindow"}
  51.     exit
  52.     } -text "Quit"
  53.     button .right.reset -command {
  54.     puts "(load NDview/scripts/reset.script command)"
  55.     flush stdout
  56.     .right.mslider.slider set 0
  57.     } -text "Reset"
  58.     button .right.help -command "loadtext text/demohelp.txt" -text "Help"
  59.     label .right.motion -text "Motion"
  60.  
  61.     frame .right.mslider
  62.     frame .right.mslider.labels
  63.     label .right.mslider.labels.fast -text "Fast"
  64.     label .right.mslider.labels.slow -text "Slow"
  65.     label .right.mslider.labels.stop -text "Stop"
  66.     pack .right.mslider.labels.fast -side top
  67.     pack .right.mslider.labels.stop .right.mslider.labels.slow -side bottom
  68.     pack .right.mslider.labels -side left -expand 1 -fill y
  69.     scale .right.mslider.slider -showvalue no -from 1 -to 0 -resolution 0.01 \
  70.     -command "setspeed"
  71.     pack .right.mslider.slider -side right -expand 1 -fill y
  72.     
  73.     pack .right.quit .right.reset .right.help .right.motion -fill x
  74.     pack .right.mslider -expand 1 -fill y
  75.     
  76.     pack .right -side right -fill y -padx 2 -pady 2
  77.  
  78.     wm resizable . 0 0
  79. }
  80.  
  81. ######################################################################
  82.  
  83. proc setspeed {val} {
  84.     if 0==$val {
  85.     puts "(transform g2 X_W_plane X_W_plane rotate 0 0 0)"
  86.     } else {
  87.     puts [format "(transform-incr g2 X_W_plane X_W_plane rotate 0 0 1.57 %f)" [expr .5/($val*$val)]]
  88.     }
  89.     flush stdout
  90. }
  91.  
  92. proc loadit {which} {
  93.     switch -exact $which {
  94.     "Point" {set data {text/point.txt NDview/geom/demo/point}}
  95.     "2 Points" {set data {text/pointd.txt NDview/geom/demo/points}}
  96.     "Segment" {set data {text/segment.txt NDview/geom/demo/segmentw+x+z+}}
  97.     "2 Segments" {set data {text/segmentd.txt NDview/geom/demo/segmentw+x+z}}
  98.     "Square" {set data {text/square.txt NDview/geom/demo/squarew+x+}}
  99.     "2 Squares" {set data {text/squared.txt NDview/geom/demo/squarew+x}}
  100.     "Cube" {set data {text/cube.txt NDview/geom/demo/cubew+}}
  101.     "2 Cubes" {set data {text/cubed.txt NDview/geom/demo/cubew}}
  102.     "Tesseract" {set data {text/tesseract.txt NDview/geom/demo/tesseract}}
  103.     }
  104.     loadtext [lindex $data 0]
  105.     puts "(if (real-id g2) (progn (geometry g2 < [lindex $data 1])) (load [lindex $data 1]))"
  106.     flush stdout
  107. }
  108.  
  109. proc loadtext {text} {
  110.     global ndroot
  111.     set f [open $ndroot/NDview/$text]
  112.     .text.t configure -state normal
  113.     .text.t delete 0.0 end
  114.     .text.t insert end [read $f]
  115.     .text.t configure -state disabled
  116.     close $f
  117. }
  118.  
  119.  
  120. mkDemo
  121. puts [format {
  122.     (load NDview/scripts/startup.big.script command)
  123.     (load NDview/scripts/reset.script command)
  124.     (emodule-run %s/scripts/eitherwindow)
  125. } $ndroot/NDview]
  126. loadit Point
  127. loadtext text/demohelp.txt
  128. flush stdout
  129.